package com.md.exception;

/**
 * 系统异常。<br />
 * 在业务系统中，凡是和使用者无关的异常，或者说即使把异常原因告知使用者，使用者也无法从系统中修正的异常，就是系统异常。<br />
 * 这类异常全部是由于程序处理不得当造成的。<br />
 * 它并不全部等于java的RuntimeException，有一些Exception，在应用系统的角度上也不应该暴露给使用者。<br />
 * 在构造系统时，除业务异常外，全部是系统异常。 在应用系统运行期间，预期是不抛出系统异常的。
 * 
 * @author 李啸吟
 * @see magicsoft.base.exception.BusinessException
 */
public class SystemException extends RuntimeException {

	private static final long serialVersionUID = 1L;

	protected int code = -1;

	/**
	 * 该构造器一般用于需要手工抛出异常，但最终用户又无法处理的场景。<br />
	 * 比如默写场景下switch的default分支等，正常情况下不会走入的分支，可使用此构造器抛出异常。
	 * 
	 * @param message
	 *            错误消息。
	 */
	public SystemException(String message) {
		super(message);
	}

	/**
	 * 该构造器一般用于有明确的异常的场景，比如catch当中。<br />
	 * 对于java的Exception，虽然是用户异常的概念，但在应用系统当中，将其暴露给最终用户是没有意义的。<br />
	 * 需要将其全部转换为系统异常。
	 * 
	 * @param cause
	 *            异常。
	 */
	public SystemException(Throwable cause) {
		super(cause);
	}

	public int getCode() {
		return this.code;
	}

}
